Technical Field
The present disclosure relates to machines implementing Transmission Control Protocol (TCP), and more specifically to management of transmission control blocks (TCBs) supporting TCP connection requests in multiprocessing environments.
Related Art
Transmission Control Protocol (TCP) provides reliable transport for a sequence of bits/bytes (data), even if such sequence is sent in the form of multiple data packets. Reliable delivery of the sequence is ensured by using appropriate acknowledgments and retransmission requests, as is well known in the relevant arts. TCP commonly operates on top of IP (Internet Protocol), which defines an addressing mechanism and forwarding mechanism such that each data packet can be delivered to a desired end network node (or nodes).
A connection is the basis for transporting data from a source application executing on a source node to a destination application in a destination node. The source and destination applications may thus be viewed as containing the end points of each connection. Each TCP/IP packet contains a source IP address and a source port number, which uniquely identifies the end point as the source application. The packet similarly contains a destination IP address and a destination port number, which uniquely identifies the end point as the destination application. The quartet of the IP addresses and port numbers uniquely identifies each connection.
Transmission Control Blocks (TCB) are data structures maintained in each network node corresponding to TCP connections. The TCBs may store information to identify the end points of the connection (e.g., identifier of a socket created by the application as the entry/egress point of the connection in some Unix type environments), the state of the connection (e.g., whether establishment of connection is complete or ongoing or being terminated, etc.,), identification of the buffer area where the data for the connection is stored as the data packets are received or transmitted, etc.
Multi-processing environments often contain applications which initiate TCP connection requests. Initiation of a TCP connection request implies causing sending of a corresponding data packet as a part of a negotiation to establish the connection with the destination application. Specific challenges may be presented in view of multiple concurrent processing entities, potentially implemented by independent processors, when such TCBs are employed to support TCP connection requests. Aspects of the present disclosure address some of the related challenges, as described below with examples.
In the drawings, like reference numbers generally indicate identical, functionally similar, and/or structurally similar elements. The drawing in which an element first appears is indicated by the leftmost digit(s) in the corresponding reference number.